package com.smforj.ssm.modules.sys.util;

import java.text.ParseException;

import com.smforj.ssm.modules.lib.domain.CheckInResponse;
import com.smforj.ssm.modules.lib.domain.CheckOutResponse;
import com.smforj.ssm.modules.lib.domain.ItemResponse;
import com.smforj.ssm.modules.lib.domain.PatronResponse;
/****
 * SIP2接口
 * 
 * @author Haijun Gao 
 * @date 2017-4-28 下午2:15:00
 * @desp http://www.cnblogs.com/saga5998/
 * @email 573107773@qq.com
 */
public interface ISip2Msg {
      /***
       *  SC->ACS 登录
       * @param szUser 用户code
       * @param szUserPWD 密码
	   * @return
	   * @date 2016-8-4 下午3:15:24
	   */
	   String loginMsg(String szUser, String szUserPWD);
	  /***
	   *  SC->ACS 登录
	   * @param szUser 用户code
	   * @param szUserPWD 密码
	   * @param scLocation sc Location
	   * @return sip2消息字符串
	   * @date 2016-8-4 上午10:06:24
	   */
	  String loginMsg(String szUser, String szUserPWD,String scLocation); 

  
      /***
       *  SC->ACS借阅者信息
       * @param readerCardId 借阅者卡号
       * @param readerPWD 借阅者密码
       * @return 发送字符串
       * @date 2016-8-4 下午3:01:25
       */
      String readerInfoMsg(String readerCardId, String readerPWD);
      
      /***
       * SC->ACS借阅者信息
       * @param readerCardId 借阅者卡号
       * @param institutionId 机构标识
       * @param readerPWD 借阅者密码
       * @return 发送字符串
       * @date 2016-8-4 下午3:22:42
       */
      String readerInfoMsg(String readerCardId, String institutionId,String readerPWD);
      /***
       *  SC->ACS图书信息
       * @param bookid 图书条码或RFID
       * @return
       * @date 2016-8-4 下午3:28:18
       */
      String bookInfoMsg(String bookid);
      
      /***
       * SC->ACS图书信息
       * @param institutionId 机构代码
       * @param bookid 图书标识 一般是Barcode
       * @param tPwd 设备密码
       * @return
       * @date 2016-8-4 下午3:26:36
       */
      String bookInfoMsg(String institutionId,String bookid,String tPwd);
      /***
       * SC->ACS还书命令
       * @param bookid 条码或RFID
       * @return ACS->SC返回的命令
       * @date 2016-8-4 下午3:31:41
       */
      String returnMsg(String bookid);
      /***
       * SC->ACS借书命令
       * @param readerCardId 借阅者证件号
       * @param readerCardPWD 证件密码（非必须）
       * @param bookid 图书id（条码）  
       * @return
       * @date 2016-8-4 下午3:34:39
       */
      String borrowMsg(String readerCardId,String readerCardPWD, String bookid);
      
      /***
       * SC->ACS借书命令
       * @param readerCardId 借阅者证件号
       * @param bookid 图书id（条码）
       * @param termPWD 终端密码
       * @param readerCardPWD 证件密码（非必须）
       * @return
       * @date 2016-8-4 下午3:34:39
       */
      String borrowMsg(String readerCardId,String readerCardPWD, String bookid, String termPWD);

      /***
       * SC->ACS续借命令
       * @param readerCardId 借阅者证件号
       * @param readerCardPWD 证件密码（非必须）
       * @param bookId 图书id（条码）
       * @return
       * @date 2016-8-4 下午12:11:04
       */
      String renewMsg(String readerCardId, String readerCardPWD, String bookId);   

      /// <summary>
      /// 解析登陆返回信息
      /// </summary>
      /// <param name="loginResponse"></param>
      /// <param name="readerInfo"></param>
      /// <returns></returns>
      Boolean login(String loginResponse);
      /***
       * 解析借阅者信息
       * @param readerInfoMsg 返回的借阅者SIP2信息
       * @return Result ERROR 借阅者对象 或 null
       * @date 2016-8-4 下午4:09:19
       */
      PatronResponse parseReaderInfo(String readerInfoMsg);  
      /***
       * 转换图书对象信息
       * @param bookInfoMsg 消息字符串
       * @return 转换后对象 status 不在该对象中体现意义
       * @date 2016-8-4 下午4:37:54
       */
      ItemResponse parseBookInfo(String bookInfoMsg);
      /***
       * 解析还书 图书信息 
       * @param bookInfoMsg 返回的图书SIP2信息
       * @return 转换的图书对象
       * @date 2016-8-4 下午4:47:25
       */
      CheckInResponse parseReturn(String bookInfoMsg);
      /***
       * 解析还书图书信息
       * @param bookInfoMsg 返回的图书SIP2信息
       * @return 图书对象
       * @throws ParseException 
       * @date 2016-8-4 下午5:32:12
       */
      CheckOutResponse parseBorrow(String bookInfoMsg) throws ParseException; 

      /***
       *  续借图书对象
       * @param bookInfoMsg  返回的图书SIP2信息
       * @param CBookInfo 图书对象
       * @return
       * @throws ParseException 
       * @date 2016-8-5 下午3:16:04
       */
      CheckOutResponse parseRenew(String bookInfoMsg) throws ParseException; 
}
